package com.qf.controller;

import com.qf.pojo.User;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.List;

/**
 * @Controller:控制器
 * @RequestMapping("/test")(类， 方法注解)： 请求映射路径
 *      可用在方法和类上，  请求时路径应该是： 类上路径  +  方法上的路径
 *      可接收get 和 post请求
 *
 * @RequestMapping(value = "/param01", method = RequestMethod.POST)  只能接收post请求，相当于注解 @PostMapping
 * @RequestMapping(value = "/param01", method = RequestMethod.GET)只能接收get请求，相当于注解 @GetMapping
 *
 *  @RequestParam: 绑定参数(在接收分页参数时经常使用)
 *      name: 指定前端的名称
 *      required: 默认值为true， true必须传此参数, false 可以不传此参数
 *      defaultValue: 默认值
 *  springMVC中默认的是请求转发
 *  重定向：redirect
 *  请求转发： forward
 * 注意： 如果 写了redirect, forward关键字，则视图解析器不会添加前缀和后缀
 *
 * 响应数据
 *   请求域存储数据
 *      ModelMap, Model,  可以手动new ，也可以写到处理器的参数, 可以在请求域存储数据
 *      ModelAndView:模型和视图对象，可以手动new ，也可以写到处理器的参数, 可以在请求域存储数据，也能指定视图页面
 *
 * @author 千锋教育
 * @Company http://www.mobiletrain.org/
 * @Version 1.0
 */
@RestController
@RequestMapping("/user")
@CrossOrigin("http://localhost:8081")
public class TestController {
    /**
     * 获取所有的User
     * @return
     */
    @GetMapping("")
    public List<User> queryAll(){
        List<User> list = new ArrayList<>();
        list.add(new User(1, "张三1", true, '男'));
        list.add(new User(2, "张三2", true, '男'));
        list.add(new User(2, "张三3", true, '男'));

        return list;
    }
    //@PathVariable 把路径中的id数据赋值给参数id
    @GetMapping("/{id}")
    public User findById(@PathVariable("id") Integer id){
        System.out.println(id);
        return new User(1, "张三1", true, '男');
    }

    //@PathVariable 把路径中的id数据赋值给参数id
    @DeleteMapping("/{id}")
    public String deleteById(@PathVariable("id") Integer id){
        System.out.println("delete:"+id);
        return "success";
    }

    //@PathVariable 把路径中的id数据赋值给参数id
    @PutMapping("")
    public String update(@RequestBody User user){
        System.out.println("put:"+user);
        return "success";
    }

    //@PathVariable 把路径中的id数据赋值给参数id
    @PostMapping("")
    public String insert(@RequestBody User user){
        System.out.println("post:"+user);
        return "success";
    }
}
